Sending information using an in-progress transaction

ABSTRACT

The present invention, in various embodiments, provides techniques for using an in-progress data transaction to send additional information. In one illustrative embodiment, two asynchronous nodes are sending data to each other. In one transaction involving the first node sending data to the second node, the second node while receiving part of the data recognizes that the rest of the data being sent is invalid, e.g., due to various kinds of errors. The second node then immediately requests the first node to resend the to-be-received, now erroneous, data. In one embodiment, the second node inserts the request in a data stream being in transit from the second node to the first node. The second node does not need to wait until the boundary of a data transaction, and, in one embodiment, the request is embedded in a “drop packet.”

FIELD OF THE INVENTION

[0001] The present invention relates generally to transmitting data and,more specifically, to sending information using an in-progress datatransaction.

BACKGROUND OF THE INVENTION

[0002] Data are often transmitted between different nodes, such ascomputer systems, network devices, microprocessors, semiconductor chips,electronic chips, etc. In various approaches, data are transmitted atthe boundary, but not in the middle, of data transactions. As a result,when a transaction is in progress, if some additional data is to besent, such as in an interrupt, this additional data must wait until thenext boundary of the transaction. In such conditions, mechanismsincluding state bits, support and control logic, etc., may be requiredto keep track of transaction boundaries. In retransmits, the existingretransmit algorithm may require modifications to support theinterrupting streams. Consequently, complexities and other problems areadded to the systems. In asynchronous systems, it is more difficult tolocate the transaction boundaries.

[0003] Based on the foregoing, it is clearly desirable that mechanismsbe provided to solve the above deficiencies and associated problems.

SUMMARY OF THE INVENTION

[0004] The present invention, in various embodiments, providestechniques for using an in-progress data transaction to send additionalinformation. In one illustrative embodiment, two asynchronous nodes aresending data to each other. In one transaction involving the first nodesending data to the second node, the second node while receiving part ofthe data recognizes that the rest of the data being sent is invalid,e.g., due to various kinds of errors. The second node then immediatelyrequests the first node to resend the to-be-received, now erroneous,data. In one embodiment, the second node inserts the request in a datastream being in transit from the second node to the first node. Thesecond node does not need to wait until the boundary of a datatransaction, and, in one embodiment, the request is embedded in a “droppacket.”

BRIEF DESCRIPTION OF THE DRAWINGS

[0005] The present invention is illustrated by way of example, and notby way of limitation, in the figures of the accompanying drawings inwhich like reference numerals refer to similar elements and in which:

[0006]FIG. 1 shows a system upon which embodiments of the invention maybe implemented;

[0007]FIG. 2 is a flowchart illustrating a method in accordance with oneembodiment;

[0008]FIG. 3 shows a computer system upon which embodiments of theinvention may be implemented.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT

[0009] In the following description, for the purposes of explanation,numerous specific details are set forth in order to provide a thoroughunderstanding of the present invention. However, it will be apparent toone skilled in the art that the invention may be practiced without thesespecific details. In other instances, well-known structures and devicesare shown in block diagram form in order to avoid obscuring theinvention.

HARDWARE OVERVIEW

[0010]FIG. 1 shows a system 100 upon which embodiments of the inventionmay be implemented. System 100 includes two nodes 110-1 and 110-2, and acommunication link 130. In one embodiment, nodes 110 are asynchronous,i.e., they run on different clocks, at different frequencies, etc., andthese frequencies can change relative to one another. Further, a node110 includes a sending machine 1102, a receiving machine 1106, a queue1110, a drop packet machine 1114, and a control machine 1120. Forillustrative purposes, an element of a node 110 having a name with -1 isassociated with node 110-1 while an element having a name with -2 isassociated with node 110-2. A node 110 normally keeps track of thestatus of its elements, the status and position of streams 135 beingsent by that same node 110. The term “node” in this document is used forillustrative purpose only, a node 110 may be a communication entity suchas a processor, a computer system, a network device, an ApplicationSpecific Integrated Circuit (ASIC) device, a programmable logic device(PLD) and their equivalences, etc. Nodes 110 are described as the same,but they can be different and/or have different functionalities.

[0011] A sending machine 1102 sends data while a receiving machine 1106receives data. Queue 1110 queues data to be transmitted. Data in queue1110 is normally selected through an arbitration process and is commonlyreferred to as arbitration winners, which are to be sent by sendingmachine 1102. In one embodiment, the data is in the form of streams orpackets 135 each of which comprises a set of information arranged invarious parts or pieces that are logically consecutive but are notnecessarily physically consecutive. At one time, multiple streams 135may be in transit between nodes 110, and these streams may be timeinterleave. That is, not all parts of a stream are consecutive, but apart may be sandwiched by some parts of one or more other streams. Forillustrative purposes, a stream 135 having a name with -12 indicatesthat the stream is traveling form node 110-1 to node 110-2 while astream having a name with -21 indicates that the stream is travelingfrom node 110-2 to node 110-1; the term transaction indicates a distinctstream of data being sent from one node 110 to another node 110; and atransaction starts at the beginning boundary of a stream and ends at theending boundary of the same stream. In one embodiment, a transactionincludes a header embedding information related to the transaction,including clues as to the transaction's size, type, etc. The receivingnode 110, via its receiving machine 1106 and based on the headerinformation, counts the number of data pieces received in a transactionand thus determines the ending boundary of the transaction. Normally,when the last data count is received, the transaction ends. As a result,once a transaction starts, transaction data length may not be changed orthe data counts may mismatch the information in the header and causeerrors in the transaction data. However, a drop packet 1118 is notcounted as part of the transaction data even if the packet is sent inthe middle of a transaction. A receiving node 110, recognizing a droppacket 1118, discards it in counting the number of data pieces in thetransaction. A drop packet 1118 can be sent several times from a sendingnode 110 to a receiving node 110 so that the receiving node 110 is morelikely to receive a valid packet 1118. For example, in an interrupt, aseries of four drop packets is sent.

[0012] Drop packet machine 1114 provides drop packets 1118 to be used inaccordance with the techniques disclosed herein. In one embodiment, adrop packet 1118 includes various bits, one of which, at appropriatetime, is used as a marker to identify the drop packet as distinct andseparate from a normal data packet. The marker bit is commonly referredto as a drop line. When not used as a drop-packet marker, the marker bitmay be used for other purposes. In various situations, such as in aninterrupt, a retransmit, etc., drop packet machine 1114 working withcontrol machine 1120 may override the arbitration winner in queue 1110for a drop packet 1118 to be sent in place of the winner that wouldotherwise be sent to the receiving node. Consequently, a drop packet1118 can be forced into a stream 135 and be sent to a receiving node atany time during a transaction even when the transaction has been inprogress or the drop packet is not required for frequency orsynchronization purposes. As a result, the drop packet 1118 can be sentwithout having to wait till a boundary of a data transaction, or withoutregards to the types of transactions, e.g., a retransmit, a regular, anidle stream, etc. When a drop packet 1118 is forced into a stream 135,relevant machines and data streams of both sending and receiving nodescan be halted immediately and the status of system 100 can be saved forlater use. System 100's status includes, for example, the arbitrationstates, the position of each stream 135 in queue 1110 and oncommunication link 130, whether the interrupted transaction is to beresumed or discarded, etc. Both sending and receiving nodes have theoptions of discarding the interrupted transaction or, based on the savedstates, continuing with the transaction where it was left off.

[0013] In one embodiment, a drop packet 1118 includes coded informationto be sent between nodes 110 in which the coded information includesinstructions for a receiving node 110 to perform some tasks, such asasking the receiving node to resend un-received but erroneous data, toinactivate itself to be replaced by another node, to replace an elementof a node, etc. If a drop packet 1118 includes special instructions fora receiving node 110 to perform, then the receiving node, recognizingthese instructions, pays attention to them. Otherwise, the receivingnode 110 and the drop packet 1118 function as usual. Drop packets 1118may also be used to synchronize or match frequencies of nodes 110. Forexample, transmitting data from node 110-1 to node 110-2 may desiretwelve pieces of data while only eight pieces of data are to be used bythe receiving node 110-2, at least four drop packets 1118 would be sentwith the eight pieces to constitute the twelve desired pieces. The fouror more drop packets 1118, when received by node 110-2, are disregardedor “dropped.”

[0014] Control machine 1120 makes decisions and performs various tasksfor node 110, such as to perform an interrupt, to arbitrate data piecesto be sent, to override a transaction, to resume an interruptedtransaction, to save the system status, to coordinate handshakes, etc.Control machine 1120 can indefinitely stall sending and receivingmechanisms of a node 110 and, if desired, resume those mechanisms.Control machine 1120 can also manipulate the drop packet transaction ina transparent way to the synchronization mechanism but useful to nodes110.

[0015] Communication link 130 transports data between appropriateelements at its two ends, and thus varies to appropriately accommodatethose elements. Examples of communication link 130 include networkmedia, interconnection fabrics, rings, crossbars, etc. In oneembodiment, communication link 130 includes a plurality of channels thatcarry data, and once a channel is used for a transaction, all datapieces for that transaction are transmitted on that same channel.Further, one of the channels, e.g., channel 1320, serves as a channeloverride to be used by drop packets 1118, e.g., when these packetsoverride usual data streams. Data in a channel override has higherpriority to be sent than data in other channels.

METHOD STEPS IN ACCORDANCE WITH ONE EMBODIMENT

[0016]FIG. 2 is a flowchart illustrating the method steps in accordancewith one embodiment. In step 204, a stream 135-12 and a stream 135-21are being in transit to node 110-2 and node 110-1, respectively.

[0017] In step 208, while receiving some part of stream 135-12 node110-2 recognizes that it does not want to continue receiving the rest ofstream 135-12, e.g., due to some system or protocol errors. Node 110-2instead desires that node 110-1 resends the parts of stream 135-12 thathave not been received by node 110-2. For illustration purposes, theseparts are referred to as a stream 135-12-resend.

[0018] In step 216, node 110-2 requests that drop packet machine 1114-2prepare a drop packet 1118-21 that includes instructions for node 110-1to resend stream 135-12-resend. Drop packet 1118-21 also includesinformation for node 110-1 to recognize that this drop packet 1118-21 isnot a normal drop packet, but, instead, a drop packet havinginstructions for receiving node 110-1.

[0019] In step 220, node 110-2 inserts drop packet 1118-21 in stream135-21 without having to wait till the end of stream 135-21 transaction.For example, stream 135-21 includes ten data pieces, and three datapieces have been sent to node 110-1. Drop packet machine 114-2, incoordination with sending machine 1112-2 and/or control machine 1120-2arranges for drop packet 1118-21 to be sent in place of the fourth datapiece that would have been sent if the drop packet 1118-21 were not tobe sent.

[0020] Instep 224, drop packet 1118-21 arrives at node 110-1. Instep228, node 110-1, based on information in drop packet 118-21, recognizesthat node 110-1 should follow instructions embedded in drop packet1118-21, that is, to resend stream 135-12-resend to node 110-2.

[0021] In step 232, each node 110-1 and 110-2 takes appropriate actionsso that stream 135-12-resend can be resent. For example, each node 110-1and 110-2 stalls its corresponding queue 1110 and other machines underits controls, stores the status of the queues and those machines sothat, if desired, the transaction of stream 135-21 may resume after theresend is complete.

[0022] Each node 110-1 and node 110-2 also handshakes before the resendstarts. In one embodiment, when a node 110 is ready to receive or tosend additional data, that node 110 sends a message to the other node toso inform. The other node, when receiving the message, sends a receiptacknowledgement. For example, if node 110-1 is ready to receive datafrom node 110-2, node 110-1 sends a message to node 110-2 to let node110-2 know that node 110-1 is ready to receive data. In return, node110-2 sends a message to node 110-1 acknowledging that node 110-2recognizes that node 110-1 is ready, node 110-2 then sends data to node110-1 as appropriate. Similarly, if node 110-1 is ready to send data tonode 110-2, node 110-1 sends a message to node 110-2 to let node 110-2know that node 110-1 is ready to send data. In return, node 110-2 sendsa message to node 110-1 acknowledging that node 110-2 recognizes thatnode 110-1 is ready, etc.

[0023] In step 236, node 110-1 and node 110-2 prepare for communicationlink 130 to transport stream 135-12-resend. In one embodiment, node110-1 and node 110-2 perform a link-initiation on communication link130. In step 240, node 110-1 sends stream 135-12-resend to node 110-2.In step 244, node 110-1 and node 110-2 restore their correspondingstatus before the resend so that they can resume their normalcommunications.

VARIOUS APPLICATIONS

[0024] In the above example, only one stream 135 in transit between onenode 110 to another node 110 is used for illustration purposes. However,techniques of the invention are not limited to that situation, but areapplicable in other situations including multiple streams. For example,at one time, multiple streams, e.g., streams 135A-12, 135B-12, and135C-12, etc. (not shown), are in transit from node 110-1 to node 110-2,and similarly, multiple streams, e.g., streams 135A-21, 135B-21, and135C-21, etc. (not shown), are in transit from node 110-2 to node 110-1.When node 110-2 desires to insert a drop packet 1118-21 into a stream135-21, node 110-2 can conveniently select any one of the packets135A-21, 135B-21, 135B-21, etc. Further, each stream 135-21 can be ofdifferent types, sizes, or lengths, and stream 135A-21 may be on achannel different from that of stream 135B-21.

[0025] Additionally, the above example is in the context of a resend (orretransmit) of erroneous data. However, techniques of the invention maybe used in different contexts such as when a stream 135 is interruptedfor it to carry additional information, including, for example,restarts, resets, notifications, authorizations, add and/or deleteelements online, etc. For example, a part or a whole of node 110-1 maybe substituted by another part or node. A node may be deleted fromsystem 100. Node 110-2 can insert instructions into drop packet 1118-21to instruct node 110-1 to shut down, remove some of its components, orcompletely remove itself from system 100. Such applications can be usedin microprocessors and/or other applications in coherency signaling,cache line, etc.

COMPUTER SYSTEM OVERVIEW

[0026]FIG. 3 is a block diagram showing a computer system 300 upon whichan embodiment of the invention may be implemented. For example, computersystem 300 may be implemented to include system 100, to serve as a node110, to perform functions in accordance with the techniques describedabove, etc. In one embodiment, computer system 300 includes a processor304, random access memories (RAMs) 308, read-only memories (ROMs) 312, astorage device 316, and a communication interface 320, all of which areconnected to a bus 324.

[0027] Processor 304 controls logic, processes information, andcoordinates activities within computer system 300. In one embodiment,processor 304 executes instructions stored in RAMs 308 and ROMs 312, by,for example, coordinating the movement of data from input device 328 todisplay device 332.

[0028] RAMs 308, usually being referred to as main memory, temporarilystore information and instructions to be executed by processor 304.Information in RAMs 308 may be obtained from input device 328 orgenerated by processor 304 as part of the algorithmic processes requiredby the instructions that are executed by processor 304.

[0029] ROMs 312 store information and instructions that, once written ina ROM chip, are read-only and are not modified or removed. In oneembodiment, ROMs 312 store commands for configurations and initialoperations of computer system 300.

[0030] Storage device 316, such as floppy disks, disk drives, or tapedrives, durably stores information for used by computer system 300.

[0031] Communication interface 320 enables computer system 300 tointerface with other computers or devices. Communication interface 320may be, for example, a modem, an integrated services digital network(ISDN) card, a local area network (LAN) port, etc. Those skilled in theart will recognize that modems or ISDN cards provide data communicationsvia telephone lines while a LAN port provides data communications via aLAN. Communication interface 320 may also allow wireless communications.

[0032] Bus 324 can be any communication mechanism for communicatinginformation for use by computer system 300. In the example of FIG. 3,bus 324 is a media for transferring data between processor 304, RAMs308, ROMs 312, storage device 316, communication interface 320, etc.

[0033] Computer system 300 is typically coupled to an input device 328,a display device 332, and a cursor control 336. Input device 328, suchas a keyboard including alphanumeric and other keys, communicatesinformation and commands to processor 304. Display device 332, such as acathode ray tube (CRT), displays information to users of computer system300. Cursor control 336, such as a mouse, a trackball, or cursordirection keys, communicates direction information and commands toprocessor 304 and controls cursor movement on display device 332.

[0034] Computer system 300 may communicate with other computers ordevices through one or more networks. For example, computer system 300,using communication interface 320, communicates through a network 340 toanother computer 344 connected to a printer 348, or through the worldwide web 352 to a server 356. The world wide web 352 is commonlyreferred to as the “Internet.” Alternatively, computer system 300 mayaccess the Internet 352 via network 340.

[0035] Computer system 300 may be used to implement the techniquesdescribed above. In various embodiments, processor 304 performs thesteps of the techniques by executing instructions brought to RAMs 308.In alternative embodiments, hard-wired circuitry may be used in place ofor in combination with software instructions to implement the describedtechniques. Consequently, embodiments of the invention are not limitedto any one or a combination of software, hardware, or circuitry.

[0036] Instructions executed by processor 304 may be stored in andcarried through one or more computer-readable media, which refer to anymedium from which a computer reads information. Computer-readable mediamay be, for example, a floppy disk, a hard disk, a zip-drive cartridge,a magnetic tape, or any other magnetic medium, a CD-ROM, a CD-RAM, aDVD-ROM, a DVD-RAM, or any other optical medium, paper-tape,punch-cards, or any other physical medium having patterns of holes, aRAM, a ROM, an EPROM, or any other memory chip or cartridge.Computer-readable media may also be coaxial cables, copper wire, fiberoptics, acoustic, or light waves, etc. As an example, the instructionsto be executed by processor 304 are in the form of one or more softwareprograms and are initially stored in a CD-ROM being interfaced withcomputer system 300 via bus 324. Computer system 300 loads theseinstructions in RAMs 308, executes some instructions, and sends someinstructions via communication interface 320, a modem, and a telephoneline to a network, e.g. network 340, the Internet 352, etc. A remotecomputer, receiving data through a network cable, executes the receivedinstructions and sends the data to computer system 300 to be stored instorage device 316.

[0037] In the foregoing specification, the invention has been describedwith reference to specific embodiments thereof. However, it will beevident that various modifications and changes may be made theretowithout departing from the broader spirit and scope of the invention.Techniques of the invention may be implemented as a system, a device, anapparatus or their equivalences, a method or a process, acomputer-readable medium, etc. Accordingly, the specification anddrawings are to be regarded as illustrative rather than as restrictive.

What is claimed is:
 1. A method for transmitting information from asecond node to a first node, comprising the steps of: establishing acommunication link between the first node and the second node; allowingone or more data transactions transmitted on the communication linkbetween the first node and the second node; identifying a data stream ofa data transaction being transmitted from the second node to the firstnode; and stalling the transaction to insert the information into thedata stream, thereby transmitting the information from the second nodevia the data stream to the first node; wherein the information is notpart of the data transaction when the data transaction starts from thesecond node to the first node.
 2. The method of claim 1 furthercomprising the step of running the first node and the second node at twodifferent frequencies.
 3. The method of claim 1 further comprising thestep of including instructions in the information for the first node toperform a task.
 4. The method of claim 3 wherein the task includes oneor a combination of resending some data, removing the first node,removing a part of the first node, restarting the first node, resettingthe first node, notifying the first node, authorizing the first node. 5.The method of claim 1 further comprising the step of sending theinformation in a packet normally used for synchronizing the first nodeand the second node.
 6. The method of claim 1 further comprising thestep of sending the information in a packet that is not counted as partof the data stream being transmitted from the second node to the firstnode.
 7. The method of claim 1 wherein the first node and the secondnode are selected from a group consisting of a computer system, anetwork device, a microprocessor, and an electronic chip.
 8. The methodof claim 1 further comprising the steps of saving the status of thetransaction at the time the transaction is stalled and resuming thetransaction based on the saved status.
 9. A method for transmittinginformation from a second node to a first node, comprising the steps of:establishing a communication link between the first node and the secondnode; identifying a data transaction being transmitted from the secondnode via the data link to the first node; the data transaction includinga header and a plurality of data pieces; the first node, based on datain the header, counting the data pieces to identify the end of thetransaction; stalling the data transaction to send a packet on thecommunication link to the first node; the packet including theinformation; and the first node counting the packet as not part of thedata transaction.
 10. The method of claim 9 further comprises the stepof running the first node and the second node at two differentfrequencies.
 11. The method of claim 9 further comprises the step ofincluding instructions in the information for the first node to performa task.
 12. A system for transmitting information from a second node toa first node, comprising: a communication link between the first nodeand the second node; one or more data transactions transmitted on thecommunication link between the first node and the second node; a datastream of a data transaction being transmitted from the second node tothe first node; and means for stalling the transaction to insert theinformation into the data stream, thereby transmitting the informationfrom the second node via the data stream to the first node; wherein theinformation is not part of the data transaction when the datatransaction starts from the second node to the first node.
 13. Thesystem of claim 12 wherein the first node and the second node run at twodifferent frequencies.
 14. The system of claim 12 wherein theinformation includes instructions for the first node to perform a task.15. The system of claim 14 wherein the task includes one or acombination of resending some data, removing the first node, removing apart of the first node, restarting the first node, resetting the firstnode, notifying the first node, authorizing the first node.
 16. Thesystem of claim 12 wherein the information is sent in a packet normallyused for synchronizing the first node and the second node.
 17. Thesystem of claim 12 wherein the information is sent in a packet that isnot counted as part of the data stream being transmitted from the secondnode to the first node.
 18. The system of claim 12 wherein the firstnode and the second node are selected from a group consisting of acomputer system, a network device, a microprocessor, and an electronicchip.
 19. The system of claim 12 wherein the status of the transactionis saved at the time the transaction is stalled and the transaction isresumed based on the saved status.
 20. A system for transmittinginformation from a second node to a first node, comprising: acommunication link between the first node and the second node; a datatransaction being transmitted from the second node via the communicationlink to the first node; the data transaction including a header and aplurality of data pieces; means for the first node, based on data in theheader, to count the data pieces to identify the end of the transaction;means for stalling the data transaction to send a packet on thecommunication link to the first node; the packet including theinformation; and means for the first node to count the packet as notpart of the data transaction.
 21. The system of claim 20 wherein thefirst node and the second node run at two different frequencies.
 22. Thesystem of claim 20 wherein the information includes instructions for thefirst node to perform a task.
 23. A computer-readable medium embodyinginstructions for a computer to perform a method for transmittinginformation from a second node to a first node, the method comprisingthe steps of: establishing a communication link between the first nodeand the second node; allowing one or more data transactions transmittedon the communication link between the first node and the second node;identifying a data stream of a data transaction being transmitted fromthe second node to the first node; and stalling the transaction toinsert the information into the data stream, thereby transmitting theinformation from the second node via the data stream to the first node;wherein the information is not part of the data transaction when thedata transaction starts from the second node to the first node.
 24. Acomputer-readable medium embodying instructions for a computer toperform a method for transmitting information from a second node to afirst node, the method comprising the steps of: establishing acommunication link between the first node and the second node;identifying a data transaction being transmitted from the second nodevia the data link to the first node; the data transaction including aheader and a plurality of data pieces; the first node, based on data inthe header, counting the data pieces to identify the end of thetransaction; stalling the data transaction to send a packet on thecommunication link to the first node; the packet including theinformation; and the first node counting the packet as not part of thedata transaction.